package ini

import (
	"auth-service/internal/global"
	"auth-service/internal/model"
	"context"
	"fmt"
	"github.com/danfwing/sd-project/pkg/config"
	"github.com/danfwing/sd-project/pkg/ini"
)

func Init(cfg *config.Config) error {
	global.Ctx = context.Background()
	// 初始化数据库连接
	db, err := ini.InitDb(cfg)
	if err != nil {
		return fmt.Errorf("init database error: %v", err)
	}
	global.GDB = db

	// 初始化Redis连接
	redis, err := ini.InitRedis(cfg, global.Ctx)
	if err != nil {
		return fmt.Errorf("init redis error: %v", err)
	}
	global.GRedis = redis
	// 初始化RabbitMQ连接
	//if err := InitRabbitMQ(); err != nil {
	//	return fmt.Errorf("init rabbitmq error: %v", err)
	//}

	// 初始化表格
	err = global.GDB.Sync2(new(model.Account), new(model.Role), new(model.UserRole), new(model.User))
	if err != nil {
		return fmt.Errorf("init table error: %v", err)
	}

	return nil
}
